package com.bestcem.xm.ticket.entity.mysql;

import com.bestcem.xm.ticket.enums.TicketOperationTypeEnum;
import com.bestcem.xm.ticket.enums.TicketStatusEnum;
import com.bestcem.xm.ticket.enums.TicketTypeEnum;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.Date;

/**
 * 工单记录表
 * 当一个问卷下某份答卷触发规则时, 自动生成一份和答卷对应的工单记录
 * 一个工单规则配置对应多条工单记录
 *
 * @author XiaoYunSong <ys.xiao@idiaoyan.com>
 * @version v1.0
 * @date 2021/8/10 16:13
 */
@ToString(callSuper = true)
@Getter
@Setter
public class TicketDO extends BaseDO {
    private static final long serialVersionUID = 1L;

    /**
     * 实体标识
     */
    private String ticketId;

    /**
     * 工单名称，手动新建工单才会存在(2.3版本新增)
     */
    private String name;

    /**
     * 系统id
     */
    private String sysId;

    /**
     * 公司id
     */
    private String orgId;

    /**
     * ticketNo 最大长度 32,格式：yyyymmdd00001
     */
    private String ticketNo;

    /**
     * 问卷id
     */
    private String surveyId;

    /**
     * 问卷标题
     */
    private String surveyTitle;

    /**
     * 当前跟进的角色id
     */
    private String followRoleId;

    /**
     * 当前跟进的用户ids
     */
    private String followUserIds;

    /**
     * 实际审核的用户
     */
    private String auditUserIds;

    /**
     * 当前审核的角色id
     */
    private String auditRoleId;

    /**
     * 第几跟进人
     */
    private Integer currentFollowNode;

    /**
     * followNodeCount
     */
    private Integer followNodeCount;

    /**
     * 当前审核节点
     */
    private Integer currentAuditNode;

    /**
     * auditNodeCount
     */
    private Integer auditNodeCount;

    /**
     * region
     */
    private String region;

    /**
     * regionName
     */
    private String regionName;

    /**
     * alertId
     */
    private String alertId;

    /**
     * alertRuleIds ObjectId 数组
     */
    private String alertRuleIds;

    /**
     * resId
     */
    private Long resId;

    /**
     * contact
     * <p>
     * 这个字段我不知道怎么写, python里面是 dict 类型, 但是库里没有数据, 所以我不知道到底是个什么样子
     * 沟通记录: @赵明: 这个是历史字段了，我接手后，也没用过
     */
    private String contact;

    /**
     * status
     *
     * @see TicketStatusEnum
     */
    private Integer status;

    /**
     * 是否跟进超时
     */
    private Boolean hasFollowOverdue;

    /**
     * 跟进超时时间
     */
    private Date followDeadline;

    /**
     * 是否审核超时
     */
    private Boolean hasAuditOverdue;

    /**
     * 审核超时时间
     */
    private Date auditDeadline;

    /**
     * 工单超时时间，与第一第二节点审核和跟进超时时间保持一致
     * 例如：当前审核节点是1，状态时跟进中，那么工单超时时间就是第一节点跟进的超时时间
     */
    private Date ticketDeadline;

    /**
     * ticketConfigId
     */
    private String ticketConfigId;

    /**
     * ticketFlow
     */
    private String ticketFlow;

    /**
     * ticketTemplate
     */
    private String ticketTemplate;

    /**
     * ticketTemplateV2
     */
    private String ticketTemplateV2;

    /**
     * ticketRecordIds ObjectId 数组
     */
    private String ticketRecordIds;

    /**
     * closedDT
     */
    private Date closeTime;

    /**
     * 当前工单要进行的流程 ObjectId 数组
     */
    private String ticketFlowList;

    /**
     * 工单处理完成时间
     */
    private Date ticketFinishTime;

    /**
     * 工单处理失败时间
     */
    private Date ticketFailedTime;

    /**
     * 当工单处理人是按照用户跟进时,该字段有值为当前跟进人id
     */
    private String curFollowUserId;

    /**
     * 触发满足哪条规则的record_id
     */
    private String alertRecordId;

    /**
     * 工单详情 显示内容
     */
    private String templateDetailFields;

    /**
     * 是否至少需要一次提交记录
     */
    private Boolean needRecord;

    /**
     * ttype
     *
     * @see TicketTypeEnum
     */
    private Integer type;

    /**
     * 是否已有跟进记录
     */
    private Boolean hasCommit;

    /**
     * member_id (工单2.2P3加入)
     */
    private String memberId;

    /**
     * 详情模板id  (工单2.3加入)
     */
    private String detailTemplateId;

    /**
     * 处理模板id(工单2.3加入)
     */
    private String handleTemplateId;

    /**
     * 1-系统创建，2-手动创建（2.3版本新增）
     *
     * @see TicketOperationTypeEnum
     */
    private Integer operationType;

    /**
     * 创建人名字
     */
    private String creatorName;

    /**
     * 是否是sample数据
     */
    private Boolean sample;

    /**
     * 工单满足的触发条件的名称
     * 2022-02-18 行动新增条件名称需求新增
     */
    private String triggerNames;
}
